package com.example.demo.demo.reflection;

import com.example.demo.demo.reflection.testClass.TestClass01;

import java.lang.reflect.Field;
import java.lang.reflect.Method;

/**
 * @author luowenjie
 * @since 2024/4/18 10:13
 */
public class mainTest {

    public static void main(String[] args) throws Exception {
        // 使用对象的getClass()方法获取Class对象
        TestClass01 obj = new TestClass01();
        Class<?> cls1 = obj.getClass();

// 使用Class类的静态方法forName()获取Class对象
        Class<?> cls2 = Class.forName("com.example.demo.demo.reflection.testClass.TestClass01");

        // 获取类的所有公共字段
        Field[] fields = cls2.getFields();

// 获取类的指定字段
        Field field = cls2.getField("id");

// 获取类的所有声明字段（包括私有字段）
        Field[] declaredFields = cls2.getDeclaredFields();

// 获取类的指定声明字段（包括私有字段）
        Field declaredField = cls2.getDeclaredField("id");

// 获取类的所有公共方法
        Method[] methods = cls2.getMethods();

// 获取类的指定方法
        Method method = cls2.getMethod("getSUser", int.class);

// 获取类的所有声明方法（包括私有方法）
        Method[] declaredMethods = cls2.getDeclaredMethods();

// 获取类的指定声明方法（包括私有方法）
        Method declaredMethod = cls2.getDeclaredMethod("getSUser", int.class);

        System.out.println(1);

    }

}
